package com.github.maojx0630.easy.translate.ann;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 翻译字段
 *
 * @author MaoJiaXing
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TranslateField {

  /** 字典类型 或 字段名 */
  String value();

  /** 别名 默认为翻译字段+Label */
  String[] alias() default "Label";

  /** 表名 如果是其他表的数据需要指定表名 */
  String tableName() default "";

  /** 字段名 表名翻译时取哪个字段的值作为query条件 */
  String columnName() default "";

  /** 分隔符 默认根据,分割 可以设置为空表示不分割 */
  String split() default ",";

  /** 值连接符 如果多值需要连接成一个字符串时使用 默认为, */
  String join() default ",";

  /** 默认多值去重 */
  boolean distinct() default true;

  /** 值为空时策略 */
  IfNull ifNull() default IfNull.ORIGINAL;

  String ifNullValue() default "";

  String remark() default "";

  enum IfNull {

    /** 空字符串 */
    EMPTY,

    /** null */
    NULL,

    /** 原值 */
    ORIGINAL,

    /** 其他值 */
    OTHER_VALUE
  }

  /** 字典类型对应字段 */
  String DICT_TYPE = "TYPE";

  /** 字典值对应字段 */
  String DICT_VALUE = "VALUE";

  /** 字典标签对应字段 */
  String DICT_LABEL = "LABEL";

  /** 字典表名 */
  String DICT_TABLE = "sys_dict";
}
